
struct DireccionHost {
	char _dir[20];
};

struct IdentificacionEntidad {

	int id_entidad;
	int id_auxiliar;
	int id_brokerConectado;
	
	DireccionHost dir_conexion;
	
	int puerto_conexion;
	int timeout_anillo;
};

union RespuestaRPC switch (int error) {
 case 0:
   IdentificacionEntidad datos;
 default:
   void;
 };

enum TipoEntidad {
	TIPO_PERSONA,
	
	TIPO_PUERTA_ENT,
	TIPO_PUERTA_SAL,
	
	TIPO_SALA_COLA,
	TIPO_SALA_ENT,
	TIPO_SALA_SAL,
	
	TIPO_BUS,
	TIPO_BROKER,
	TIPO_ADMIN,
	
	TIPO_DESCONOCIDO
	
};

enum METODO {

	MTD_OBTENER_ID,
	
	MTD_CONSULTAR_ID,
	
	MTD_ID_BUS_REEMPLAZO,
	
	MTD_REEMPLAZAR_BUS,
	
	MTD_CONSULTAR_DATOS,
	
	MTD_BROKER_CAIDO 
};

enum LugarParque {
	LUGAR_ENTRADA,
	LUGAR_ZOO
};
 
struct DatosEntidad {

	int numeroEntidad;
	int id_auxiliar;
	
	TipoEntidad entidad;
	METODO metodo;
	LugarParque lugar;
	
	DireccionHost direccion;
	int puerto_escucha;
	int pid;
	
};

program SERVPROG {

	version SERVVERS {
		RespuestaRPC identificar(DatosEntidad) = 1;
	} = 1;
      
} = 0x20000001;